home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_08_05 / 8n05054b < prev    next >
Text File  |  1990-04-17  |  1KB  |  47 lines

  1. *****Listing 4*****
  2.  
  3. class Iregister : public Register {
  4. public:
  5.     Iregister()        { val = 0; }
  6.     void load( int x)    { val = x; }
  7.     int store()        { return val; }
  8.  
  9.     void go( Buffer &b, File &output)
  10.     {
  11.         if( !b.go( store()))
  12.             output.put( "?\n" );
  13.     }
  14.  
  15.     // print 
  16.     void print( Buffer &b, File &output)
  17.     {
  18.         for( int n = store(); !b.isend() && n; n-- )
  19.             output.put( b.geta() ), b.next();
  20.         output.put( '\n');
  21.     }
  22.  
  23.     // Inherit parent class insert(), ignore prefix
  24.  
  25.     void del( Buffer &b, Buffer &kbuf, File &output)
  26.     {
  27.         // flush previous contents of kill buffer
  28.         for( kbuf.begin(); !kbuf.isend(); kbuf.next() )
  29.             kbuf.dela();
  30.  
  31.         for( int n = store(); !b.isend() && n; n-- )
  32.             kbuf.putb( b.dela());
  33.         if( n)
  34.             printf( "? %d characters left undeleted\n", n);
  35.     }
  36.  
  37.     // re-use kill buffer by geta'ing and not deleting from it
  38.     void put( Buffer &b, Buffer &kbuf)
  39.     {
  40.         for( kbuf.begin(); !kbuf.isend(); kbuf.next())
  41.             b.putb( kbuf.geta());
  42.     }
  43. private:
  44.     int val;
  45. };
  46.  
  47.